<?php
header('Content-Type: application/json');

// 确保temp目录存在
$tempDir = __DIR__ . '/temp';
if (!file_exists($tempDir)) {
    mkdir($tempDir, 0777, true);
}

// 检查是否有文件上传
if (!isset($_FILES['txtFile'])) {
    echo json_encode(['error' => '没有接收到上传文件']);
    exit;
}

$file = $_FILES['txtFile'];

// 检查上传是否成功
if ($file['error'] !== UPLOAD_ERR_OK) {
    echo json_encode(['error' => '文件上传失败']);
    exit;
}

// 检查文件类型
$fileExt = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
if ($fileExt !== 'txt') {
    echo json_encode(['error' => '只允许上传TXT文件']);
    exit;
}

// 生成新的文件名（日期+随机数）
$newFileName = date('Ymd') . '_' . sprintf('%06d', mt_rand(0, 999999)) . '.txt';
$uploadPath = $tempDir . '/' . $newFileName;

// 移动上传的文件
if (!move_uploaded_file($file['tmp_name'], $uploadPath)) {
    echo json_encode(['error' => '保存文件失败']);
    exit;
}

// 读取并解析文件内容
$content = file_get_contents($uploadPath);
if ($content === false) {
    echo json_encode(['error' => '无法读取上传的文件']);
    unlink($uploadPath); // 删除上传的文件
    exit;
}

// 解析内容
$lines = explode("\n", $content);
$currentGroup = '';
$channels = [];
$totalLines = 0; // 用于统计实际的频道数量

foreach ($lines as $line) {
    $line = trim($line);
    if (empty($line)) continue;
    
    if (strpos($line, '#genre#') !== false) {
        $currentGroup = explode(',', $line)[0];
        continue; // 跳过分组行，不计入总数
    }
    
    $parts = explode(',', $line);
    if (count($parts) >= 2) {
        $channels[] = [
            'group' => $currentGroup,
            'name' => $parts[0],
            'url' => $parts[1]
        ];
        $totalLines++; // 只统计实际的频道行
    }
}

// 删除临时文件
unlink($uploadPath);

// 返回结果时包含实际的频道数量
echo json_encode([
    'channels' => $channels,
    'total' => $totalLines
]); 